<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>迷你式 Markdown</title>
  <script src="https://unpkg.com/marked@0.3.6"></script>
  <script src="https://cdn.bootcss.com/lodash.js/4.16.0/lodash.js"></script>
  <style>
    html,
    body,
    #editor {
      margin: 0;
      height: 100%;
      font-family: 'Helvetica Neue', Arial, sans-serif;
      color: #333;
    }

    textarea,
    #editor div {
      display: inline-block;
      width: 49%;
      height: 100%;
      vertical-align: top;
      box-sizing: border-box;
      padding: 0 20px;
    }

    textarea {
      border: none;
      border-right: 1px solid #ccc;
      resize: none;
      outline: none;
      background-color: #f6f6f6;
      font-size: 14px;
      font-family: 'Monaco', courier, monospace;
      padding: 20px;
    }

    code {
      color: #f66;
    }
  </style>
</head>

<body>

  <div id="editor">
    <textarea :value="input" @input="update"></textarea>
    <div v-html="compiledMarkdown"></div>
  </div>

  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>

  <script>
    new Vue({
      el: '#editor',
      data: {
        input: '# hello markdown'
      },
      computed: {
        compiledMarkdown: function() {
          return marked(this.input, { sanitize: true })
        }
      },
      methods: {
        update: _.debounce(function(e) {
          this.input = e.target.value 
        }, 300)
      },
    })

  </script>

</body>

</html>